/**
 * 项目状态枚举
 */
export enum ProjectStatus {
	/** 进行中 */
	IN_PROGRESS = 1,
	/** 已完成 */
	COMPLETED = 2,
	/** 已归档 */
	ARCHIVED = 3
}

/**
 * 项目任务类型
 */
export enum TaskType {
	/** 盈利预测 */
	PROFIT_PREDICTION = 1,
	/** 客流预测 */
	MARKET_RESEARCH = 2
}

/**
 * 项目任务状态
 */
export enum TaskStatus {
	/** 未开始 */
	NOT_STARTED = 1,
	/** 进行中 */
	IN_PROGRESS = 2,
	/** 已完成 */
	COMPLETED = 3
}

/**
 * 项目任务接口
 */
export interface ProjectTask {
	/** 任务ID */
	id : string;
	/** 任务类型 */
	type : TaskType;
	/** 任务名称 */
	name : string;
	/** 任务状态 */
	status : TaskStatus;
	/** 完成时间 */
	completedTime ?: string;
	/** 任务数据（存储具体的预测结果） */
	data ?: any;
}

/**
 * 项目接口
 */
export interface Project {
	/** 项目ID */
	id : string;
	/** 项目名称 */
	name : string;
	/** 项目描述 */
	description ?: string;
	/** 项目状态 */
	status : ProjectStatus;
	/** 创建时间 */
	createdAt : string;
	/** 更新时间 */
	updatedAt : string;
	/** 完成时间 */
	completedAt ?: string;
	/** 项目任务列表 */
	tasks : ProjectTask[];
	/** 项目进度（0-100） */
	progress : number;
	/** 创建者ID */
	creatorId ?: string;
}

/**
 * 项目统计接口
 */
export interface ProjectStatistics {
	/** 总项目数 */
	total : number;
	/** 进行中的项目数 */
	inProgress : number;
	/** 已完成的项目数 */
	completed : number;
	/** 已归档的项目数 */
	archived : number;
}

/**
 * 创建项目参数
 */
export interface CreateProjectParams {
	/** 项目名称 */
	name : string;
	/** 项目描述 */
	description ?: string;
}

/**
 * 更新项目参数
 */
export interface UpdateProjectParams {
	/** 项目ID */
	id : string;
	/** 项目名称 */
	name ?: string;
	/** 项目描述 */
	description ?: string;
	/** 项目状态 */
	status ?: ProjectStatus;
}

/**
 * 更新任务参数
 */
export interface UpdateTaskParams {
	/** 项目ID */
	projectId : string;
	/** 任务ID */
	taskId : string;
	/** 任务状态 */
	status ?: TaskStatus;
	/** 任务数据 */
	data ?: any;
}

/**
 * 项目列表查询参数
 */
export interface ProjectListParams {
	/** 页码 */
	page ?: number;
	/** 每页数量 */
	pageSize ?: number;
	/** 项目状态筛选 */
	status ?: ProjectStatus;
	/** 搜索关键词 */
	keyword ?: string;
}

/**
 * 项目列表响应（MyBatis-Plus IPage对象）
 */
export interface ProjectListResponse {
	/** 记录列表 */
	records : Project[];
	/** 总记录数 */
	total : number;
	/** 每页大小 */
	size : number;
	/** 当前页 */
	current : number;
	/** 总页数 */
	pages : number;
}